package org.leo.flow.step;

import org.leo.flow.bean.InData;
import org.leo.flow.bean.OutData;
import org.leo.flow.flow.IFlow;

/**
 * 
 * Created on 2017年2月4日
 * <p>
 * Description 步骤接口
 * <p>
 * Copyright xxx (c) 2019 .
 * 
 * @author leo
 */
public interface IStep {

	public String getName();

	public IFlow getFlow();
	public void setFlow(IFlow flow);
	
	/**
	 * 
	 * Created on 2017年2月4日 .
	 * <p>
	 * Description 处理
	 *
	 * @author leo 
	 * @param data
	 * @return
	 * @throws Exception SOut<String,String>
	 */
	public OutData<String, Object> handle(InData<String, Object> data) throws Exception;

	/**
	 * 
	 * Created on 2017年2月4日 .
	 * <p>
	 * Description {描述}
	 *
	 * @author leo 
	 * @param step void
	 */
	public void next(IStep step);

	/**
	 * 
	 * Created on 2017年2月4日 .
	 * <p>
	 * Description {描述}
	 *
	 * @author leo 
	 * @return IStep
	 */
	public IStep getNextStep();
}
